package com.ky.tms.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ky.tms.entity.TmsCustomer;
import com.ky.tms.entity.TmsOrder;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ky.tms.entity.TmsUser;
import com.ky.tms.exception.PredictableException;
import com.ky.tms.vo.EntryOrder;
import com.ky.tms.vo.OrderIncome;
import com.ky.tms.vo.OrderIncomeAudit;
import com.ky.tms.vo.TrackOrder;
import org.springframework.dao.PermissionDeniedDataAccessException;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author chengkaimao
 * @since 2020-03-24
 */
public interface ITmsOrderService extends IService<TmsOrder> {

    IPage<EntryOrder> entryPage(String userName, TmsOrder tmsOrder, Long limit, Long pages);

    IPage<TrackOrder> trackPage(String userName, TrackOrder trackOrder, Long limit, Long pages);

    IPage<TmsOrder> splitPage(String userName, TmsOrder tmsOrder, Long limit, Long pages);

    IPage<TmsOrder> dispatchPage(String userName, TmsOrder tmsOrder, Long limit, Long pages);

    IPage<TmsOrder> auditPage(String userName, TmsOrder tmsOrder, Long limit, Long pages);

    IPage<TmsOrder> invoicePage(String userName, TmsOrder tmsOrder, Long limit, Long pages);

    IPage<OrderIncome> incomePage(String userNam, TmsOrder tmsOrder, Long limit, Long pages);

    IPage<OrderIncomeAudit> incomeAuditPage(String userNam, TmsOrder tmsOrder, Long limit, Long pages);

    void entryAdd(String userName, EntryOrder entryOrder)  throws PredictableException;

    void entryUpdate(String userName, EntryOrder entryOrder) throws PredictableException;

    int entrySubmit(String userName, List<Long> ids);

    int entryDel(String userName, List<Long> ids);

    void splitSave(String userName, TmsOrder tmsOrder) throws PredictableException;

    int splitDel(Long id);

    int splitDelLn(String loadNo);

    void rollbackSplit(String userName, TmsOrder tmsOrder) throws PredictableException;

    void auditOrder(String userName, TmsOrder tmsOrder) throws PredictableException;

    void splitReject(String userName, TmsOrder tmsOrder) throws PredictableException;

    void income(String userName, TmsOrder tmsOrder) throws PredictableException;

    void invoice(String userName, List<Long> ids) throws PredictableException;

    void pay(String userName, List<Long> ids) throws PredictableException;

    void trackPass(String userName, TrackOrder trackOrder) throws PredictableException;

    void trackReject(String userName, TrackOrder trackOrder) throws PredictableException;

    void incomeSave(String userName, OrderIncome orderIncome) throws PredictableException;

    void incomeSubmit(String userName, List<Long> ids) throws PredictableException;

    void incomeAudit(String userName, List<Long> ids) throws PredictableException;

    void incomeReject(String userName, List<Long> ids) throws PredictableException;

    void invoiceReject(Long id) throws PredictableException;

    void reportEntry(String userName, MultipartFile file) throws PredictableException;

    List<TmsCustomer> customers ();



}
